package HereClass;

public class UsuariosConectados {

	private Conectavel[] usuariosConectados;
	private final int capacidadeDoSistema = 100;
	private static UsuariosConectados usuarios = null;
	
	protected UsuariosConectados() {
		usuariosConectados = new Conectavel[capacidadeDoSistema];
	}
	
	public static UsuariosConectados getInstance(){
		if (usuarios == null)
			usuarios = new UsuariosConectados();
		return usuarios;
	}
	
	public int conectaUsuario(Usuario usuario){
		int geraId = idVazio();
		usuariosConectados[geraId] = usuario;
		return geraId;
	}
	
	private int idVazio(){
		for (int i = 0; i < usuariosConectados.length; i++)
			if (usuariosConectados[i] == null)
				return i;
		return usuariosConectados.length;
	}
	
	public Conectavel getUsuario(String id){
		int idConectado = TransformaString.toInt(id);
		if(idConectado == -1)
			return null;
		return usuariosConectados[idConectado];
	}
	
	public int getIdUsuario(String userName){
		for (int i = 0; i < usuariosConectados.length; i++)
			if(usuariosConectados[i]!=null)
				if(userName.equals(usuariosConectados[i].getUserName()))
					return i;
		return -1;
	}
	
	public boolean desconectaUsuario(int id){
		if(usuariosConectados[id] == null) 
			return false;
		usuariosConectados[id] = null;
		return true;
	}
	
	public Conectavel getUsuarioConectadoByUserName(String username) {
		for (int i = 0; i < usuariosConectados.length; i++)
			if(usuariosConectados[i]!=null)
				if(username.equals(usuariosConectados[i].getUserName()))
					return usuariosConectados[i];
		return null;
	}
	
	public int getCapacidadeDoSistema(){
		return capacidadeDoSistema;
	}
	
}
